Python print() 打印内容 您所在的位置:网站首页 print 2 Python print() 打印内容

Python print() 打印内容

2024-07-17 12:42| 来源: 网络整理| 查看: 265

本内容来自:https://gairuo.com

说明

《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。

本内容来自:https://gairuo.com

print() 是 python 最美的语句,也是我们学习这个语言的开始。它会将你知道的内容,不知道(在变量里)的内容打印输出。print 是 Python 的一个内置函数,用于打印输出内容。

基本用法 print("Hello world!") # Hello world!

输出数字的情况:

print(8848) # 8848

需要注意的是:

括号不能少,没有括号那是 python 2.0 的语法 print 和括号之间不要留有空格,那是不好的习惯 你可以在括号里输入你任意想输出的内容 数字不用加引号,文字就需要加引号 单引号或者双引号都可以,但必须成对 作为一个函数,print() 的返回值永远为 None 输出变量

假如 pi = 3.14,我们:

print(pi) # 3.14 输出多个内容 print("圆周率", pi) # 圆周率 3.14

我们看到,中间用空格分隔,变量也帮我们打印出了具体的值。试试看以下代码:

print(8848, '新的高度。') print(1, 2, 3, 4) print('盖若', '是个好网站') print('---------') 连接 print("圆周率", pi, sep=":") # 圆周率:3.14

我们看到,两个值之间多了个: 分隔。试试以下代码:

print(1, 2, 3, 4, sep="-") # 1-2-3-4 print(1, 2, 3, 4, sep="\n") # \n 代表换行 ''' 1 2 3 4 ''' print(1, 2, 3, 4, sep="\t") # \t 代表一个制表符号,就是 tab # 1 2 3 4 结尾连接

print() 执行完后,会在所有内容输出完后加一个换行 \n, end 参数可以让我们自己定义输出什么。以下代码,结尾用空格连接, 1 和 2 在同一行。如果没有 end 参数执行完 1 和 2 各占一行。

print(1, end=" " ) print(2, end=" " ) # 1 2 Python 2 的 Print 语句

需要再次强调的是,在 Python 2 中 print 是一个关键字,在打印内容是直接用此关键字,如:

print 123; print 'Hello';

但在 Python 3 中,print 变为一个内置函数,同时 print 函数支持多个传入参数,更加方便,在学习和编写代码过程中要注意分辨。

print 语句的写法也是我们分辨 python 版本的一个重要标志。

Notebook 相关

一般,我们如果只想看变量的值可以不用 print,直接输入变量(如 pi)就可以看到返回结果,它会返回变量的值并显示出来,这是 Notebook 非常方便的功能。

高级方法

学习提示

本内容为 print 的高级用法,需要一定的背景知识,如果是初学者请跳过。

print() 语法

print() 作为内置函数,它的语法为:

print(*objects, sep=' ', end='\n', file=None, flush=False) def print( *values: object, sep: str | None = ..., end: str | None = ..., file: SupportsWrite[str] | None = ..., flush: Literal[False] = ..., ) -> None: ...

它将值打印到流或 sys.stdout(默认)。其中 objects 是一个序列对象,语法表示中可见它可以被解包,其他可选的关键字参数有:

file: 类似文件的对象(流);默认为当前系统的 sys.stdout sep: 在输出的值之间插入(分隔)字符串,默认为空格 end: 最后一个值后追加的字符串,默认为换行符 flush: 是否强制刷新

以上四个参数必须以关键字参数的形式给出,所有非关键字参数都会被转换为字符串,就像是执行了 str() 一样,并会被写入到流,以 sep 且在末尾加上 end。 sep 和 end 都必须为字符串;它们也可以为 None,这意味着使用默认值。 如果没有给出 objects,则 print() 将只写入 end。

file 参数必须是一个具有 write(string) 方法的对象;如果参数不存在或为 None,则将使用 sys.stdout。 由于要打印的参数会被转换为文本字符串,因此 print() 不能用于二进制模式的文件对象。 对于这些对象,应改用 file.write(...)。输出是否缓存通常取决于 file,但如果 flush 关键字(在 3.3 版新增)参数为 True,输出流会被强制刷新。

print() 输出到文件

以下我们实现一个将 print 内容输出到文件的功能:

# 重写 with open('file.txt', 'w') as f: print('hello world', file=f) # 追加 with open('file.txt', 'a') as f: print('hello world', file=f) # 或者 f = open('file.txt', 'a') print('hello world', file=f) f.close()

我们打开 file.txt 文件后,可以看到输出的内容。

另外一个技巧是重写 sys.stdout 方法:

import sys # 原输出方法赋值 orig_stdout = sys.stdout # 定义输出文件操作 f = open('out.txt', 'w') # 重写默认输出方法 sys.stdout = f # 打印=文件输出 for i in range(3): print('i = ', i) # 默认输出归位 sys.stdout = orig_stdout # 关闭文件操作 f.close()

另一种重定向输出的方法是在执行 Python 脚本时直接从命令行重定向。我们可以使用 > 字符来输出重定向:

# demo.py 脚本文件内容 print('Hello, Python!') # 在终端执行 Python 脚本 python3 demo.py > demo.txt # 得到 demo.txt 的内容 # Hello, Python! flush 参数示例

如同 C 语言,print() 使用标准输出。这不过是操作系统中的“文件”,程序的文本输出在操作系统中发送,因此可以显示给用户。

默认情况下,stdout 是缓冲的。也就是说,在收到特殊换行代码 \n 之前,它会存储接收到的数据而不显示数据。Python 的 print 函数会自动增加换行符给发送给它的任何字符串。但有时这种行为是不可取的,你想在同一行上显示多个东西。

在下例中,将使用 print 函数的 end 参数以换行符以外的字符(或空字符串)结束字符串,这样您就不会打印除所要求的内容之外的任何内容。以下代码在同一行上打印几个点,每 0.5s 打印一个点(注意:在终端中执行,不要在 Notebook):

# 参考:https://itqna.net/questions/37569/what-print-flush-python-closed import time for _ in range(5): print('.', end='') time.sleep(0.5) print(' Gairuo!') # 在终端中最后一次性显示 # ..... Gairuo!

但在大多数情况下,2.5 秒内什么也没发生,然后所有的点都同时出现。这是因为在默认情况下,stdout 在接收到新行之前不会显示任何内容,而我们直到最后才会发送新行。那么我们如何解决这个问题呢?很简单,只需使用 flush 强制立即显示结果,即使没有新行:

import time for _ in range(5): print('.', end='', flush=True) time.sleep(0.5) print(' Gairuo!') # 依次显示以下内容 # ..... Gairuo!

值得一提的是,flush 作为 print 的增强参数,仅在Python 3.3 中提供。在此之前,它必须手动调用:

import sys import time for _ in range(5): print('.', end='') sys.stdout.flush() # 这儿 time.sleep(0.5) print(' Gairuo!')

这个 flush 参数可以帮我们做出类似执行进度条之类的功能。

使用场景:

尤其是在 while 循环中,要想每进行一次 while 循环体,在屏幕上更新打印的内容就得使用 flush=True 的参数。 打开一个文件, 向其写入字符串, 在关闭文件 f.close() 之前, 打开文件可能是看不到写入的字符的, 要想在关闭之前实时的看到写入的字符串,应该用 flush=True 参考 https://docs.python.org/zh-cn/3/library/functions.html#print 相关内容 Python习题 238:关于 while 语句执行结果是? 2024-06-10 09:43:43 Python习题 140:打印纵向直方图 2023-12-16 15:43:52 Python习题 139:打印横向直方图 2023-12-16 15:39:50 Python习题 138:打印九九乘法表 2023-12-16 13:37:22 Python习题 115:print() 打印内容保存到文件里 2023-09-20 14:33:48 Python习题 060:值不是布尔值的表达式是? 2023-08-30 10:59:03 Python习题 013:此print代码输出的结果是? 2023-08-20 15:40:36 Python习题 012:print如多个值之间加空格? 2023-08-20 11:18:23 Python 打印九九乘法表 2023-05-26 15:52:03 基础语法 Python 教程 格式化字符串 > Python 内置函数 range() 范围数值 >

更新时间:2024-06-01 22:18:30 标签:python 输出



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有